From 4abc4afefd352732cd739dda168a3a30eb3002f0 Mon Sep 17 00:00:00 2001 From: "kaf24@firebug.cl.cam.ac.uk" Date: Tue, 23 Aug 2005 17:29:46 +0000 Subject: [PATCH] Ensure cur_pgd per-cpu variables are initialised early. Secondary VCPUs can take page faults immediately after booting, because of writable pagetable logic. Signed-off-by: Keir Fraser --- linux-2.6-xen-sparse/arch/xen/i386/mm/init.c | 3 +++ linux-2.6-xen-sparse/arch/xen/x86_64/mm/init.c | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/linux-2.6-xen-sparse/arch/xen/i386/mm/init.c b/linux-2.6-xen-sparse/arch/xen/i386/mm/init.c index 78d5058f92..645eaa34d6 100644 --- a/linux-2.6-xen-sparse/arch/xen/i386/mm/init.c +++ b/linux-2.6-xen-sparse/arch/xen/i386/mm/init.c @@ -348,9 +348,12 @@ static void __init pagetable_init (void) { unsigned long vaddr; pgd_t *pgd_base = (pgd_t *)xen_start_info.pt_base; + int i; swapper_pg_dir = pgd_base; init_mm.pgd = pgd_base; + for (i = 0; i < NR_CPUS; i++) + per_cpu(cur_pgd, i) = pgd_base; /* Enable PSE if available */ if (cpu_has_pse) { diff --git a/linux-2.6-xen-sparse/arch/xen/x86_64/mm/init.c b/linux-2.6-xen-sparse/arch/xen/x86_64/mm/init.c index 859c9e72ca..f4c35e4a6b 100644 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/mm/init.c +++ b/linux-2.6-xen-sparse/arch/xen/x86_64/mm/init.c @@ -559,6 +559,11 @@ static void xen_copy_pt(void) void __init xen_init_pt(void) { + int i; + + for (i = 0; i < NR_CPUS; i++) + per_cpu(cur_pgd, i) = init_mm.pgd; + memcpy((void *)init_level4_pgt, (void *)xen_start_info.pt_base, PAGE_SIZE); -- 2.30.2